var nombreEtiqueta_temp;

function tieneClase(ele, cls) {
	return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}

function newRow(directory_url) {
	cancelSelectedRow(directory_url);

	abmList = document.getElementById('abmList');
	rowCount = abmList.rows.length;

	// clonar ultima columna (solo para tener los campos)
	var lastRow = abmList.rows[rowCount - 1];
	var newRow = lastRow.cloneNode(true);

	newRow.setAttribute("id", "selected"); // se pone en verde
	newRow.setAttribute("class", "newRow"); // se diferencia de que es una
	// etiqueta nueva y no de edicion

	// La agrega y le realiza cambios
	abmList.appendChild(newRow);
	rowCount = abmList.rows.length;
	var celdas = abmList.rows[rowCount - 1].cells;
	var tagId = rowCount - 1;

	// Nombre de etiqueta (para completar)
	celdas[1].innerHTML = "<input type='text' id='nombreEtiqueta"
		+ "' name='nombreEtiqueta" + "' value='Nueva etiqueta' />";
	document.getElementById("nombreEtiqueta").select();
	document.getElementById("nombreEtiqueta").focus();

	// Creador de la etiqueta
	celdas[2].innerHTML = document.getElementById("userName").value;

	celdas[3].innerHTML = "<span class='gray-italic'>[&uacute;ltima modificaci&oacute;n]</span>";

	celdas[4].innerHTML = "<img title='Usuario activo' alt='Desactivar' src='"
		+ directory_url + "img/verdadero.gif'>";

	// borra el 'Nueva Etiqueta' y lo reemplaza por 'Cancelar'
	sacarNewRow();
	agregaCancelarGuardarNuevo(directory_url);
}

function save(directory_url) {
	var url = directory_url + "etiquetas/add";
	jQuery.ajax({
		type: "post",
		url:   url,
		data: {
			nombreEtiqueta : jQuery('#nombreEtiqueta').val() 
		},
		success: function (data, textStatus, xhr){
				
			var response = xhr.getResponseHeader('X-JSON');
			var hash = jQuery.parseJSON(response);
			
			var id = hash.id;
			var nombre = hash.nombre;
			var creadorNombre = hash.creadorNombre;
			var creadorApellido = hash.creadorApellido;
			var fechaModificacion = hash.fechaModificacion;
			var activo = hash.activo;

			var nuevaRow = document.getElementById("selected");
			var cells = nuevaRow.cells;
			cells[0].innerHTML = id;
			cells[1].innerHTML = nombre;
			cells[2].innerHTML = creadorNombre + " " + creadorApellido;
			cells[3].innerHTML = fechaModificacion;
			if (activo) {
				cells[4].innerHTML = "<a href='"
					+ directory_url
					+ "etiquetas/cambiarEstado/"
					+ id
					+ "'><img title='Usuario activo' alt='Desactivar' src='"
					+ directory_url + "img/verdadero.gif'></a>";
			} else {
				cells[4].innerHTML = "<a href='"
					+ directory_url
					+ "etiquetas/cambiarEstado/"
					+ id
					+ "'><img title='Usuario activo' alt='Desactivar' src='"
					+ directory_url + "img/falso.gif'></a>";
			}
			cells[5].innerHTML = "<a onclick='mostrarUsuariosAsociados(" + directory_url
			+ ", " + id + ")' href='#'>"
			+ "<img title='Editar' alt='Editar' src='"
			+ directory_url + "img/modificar.gif'></a>";

			// se le saca el verde de fondo
			nuevaRow.setAttribute("id", "");
			agregarNewRow();
			ocultarAsociacionUsuarios();
		},
		error: function (jqXHR, textStatus, errorThrown) {
			alert("Hubo algun error.");
		}
	});
}

function edit(directory_url, rowId) {
	cancelSelectedRow(directory_url);
	document.getElementById("asocUsuarios").style.display = "block";

	aModificar = getRowById(rowId);
	aModificar.setAttribute("id", "selected");
	agregaCancelarGuardar(directory_url);

	celdas = aModificar.cells;
	actualNombreEtiqueta = celdas[1].innerHTML;
	nombreEtiqueta_temp = celdas[1].innerHTML; 
	celdas[1].innerHTML = "<input type='text' id='nombreEtiqueta"
		+ "' name='nombreEtiqueta" + "' value='" + actualNombreEtiqueta
		+ "'/>";
	document.getElementById("nombreEtiqueta").select();
	document.getElementById("nombreEtiqueta").focus();


}

function saveEditedChanges(directory_url) {
	var url = directory_url + "etiquetas/edit";
	jQuery.ajax({
		type: "post",
		url: url,
		data: {
			nombreEtiqueta : jQuery('#nombreEtiqueta').val(),
			idEtiqueta : getSelectedRowId()
		},
		success: function (data, textStatus, xhr){
			var response = xhr.getResponseHeader('X-JSON');
			var hash = jQuery.parseJSON(response);
			
			var id = hash.id;
			var nombre = hash.nombre;
			var creadorNombre = hash.creadorNombre;
			var creadorApellido = hash.creadorApellido;
			var fechaModificacion = hash.fechaModificacion;
			var activo = hash.activo;

			var editRow = getSelectedRow();
			var cells = editRow.cells;
			cells[0].innerHTML = id;
			cells[1].innerHTML = nombre;
			cells[2].innerHTML = creadorNombre + " " + creadorApellido;
			cells[3].innerHTML = fechaModificacion;
			if (activo) {
				cells[4].innerHTML = "<a href='"
					+ directory_url
					+ "etiquetas/cambiarEstado/"
					+ id
					+ "'><img title='Usuario activo' alt='Desactivar' src='"
					+ directory_url + "img/verdadero.gif'></a>";
			} else {
				cells[4].innerHTML = "<a href='"
					+ directory_url
					+ "etiquetas/cambiarEstado/"
					+ id
					+ "'><img title='Usuario activo' alt='Desactivar' src='"
					+ directory_url + "img/falso.gif'></a>";
			}
			cells[5].innerHTML = "<a onclick='mostrarUsuariosAsociados(" + directory_url
			+ ", " + id + ")' href='#'>"
			+ "<img title='Editar' alt='Editar' src='"
			+ directory_url + "img/modificar.gif'></a>";

			// se le saca el verde de fondo
			editRow.setAttribute("id", "");
			agregarNewRow();
			ocultarAsociacionUsuarios();
		},
		error: function (jqXHR, textStatus, errorThrown) {
			alert("Hubo algun error.");
		}
	});
}

/** *FIN FUNCIONES ABM *** */

function cancelSelectedRow(directory_url) {

	var selectedRow = document.getElementById("selected");

	if (selectedRow) { // si hay alguna row seleccionada

		if (selectedRow.getAttribute("class") == "newRow") { // es una fila

			// nueva creada
			// al final
			selectedRow.remove(); // la elimina directamente
			agregarNewRow();
			ocultarAsociacionUsuarios();
		} else { // es una row editandose
			agregarModificarMostrarUsuarios(directory_url);
			// agregarMostrarUsuarios(directory_url);
			selectedRow.setAttribute("id", ""); // se le saca el verde
			selectedRow.cells[1].innerHTML = nombreEtiqueta_temp; // pone el
			// texto
			// original
			agregarNewRow();
			ocultarAsociacionUsuarios();
		}
	}
}

function agregaCancelarGuardarNuevo(directory_url) {

	row = document.getElementById("selected");
	cells = row.cells;
	rowId = getRowId(row);
	var botones = '<a href="#" class="abm" id="abm-cancel" onclick="cancelSelectedRow('
		+ directory_url + ')"><img title="Cancelar" alt="Cancelar" src="' + directory_url + 'img/cancel.png" /></a>';

	botones += '<a href="#" class="abm" id="abm-save" onclick="save(' + directory_url + ')"><img title="Guardar" alt="Guardar" class="save" src="' + directory_url + 'img/disk.png" /></a>';

	cells[cells.length - 1].innerHTML = botones;
}

function agregaCancelarGuardar(directory_url) {

	row = document.getElementById("selected");
	cells = row.cells;
	rowId = getRowId(row);
	var botones = '<a href="#" class="abm" id="abm-cancel" onclick="cancelSelectedRow('
		+ directory_url + ')"><img title="Cancelar" alt="Cancelar" src="' + directory_url + 'img/cancel.png" /></a>';

	botones += '<a href="#" class="abm" id="abm-save" onclick="saveEditedChanges(' + directory_url + ')"><img title="Guardar" alt="Guardar" class="save" src="' + directory_url + 'img/disk.png" /></a>';

	cells[cells.length - 1].innerHTML = botones;
}

function agregarModificarMostrarUsuarios(directory_url) {
	row = document.getElementById("selected");
	cells = row.cells;
	rowId = getRowId(row);

	botones = '<a href="#" onclick="mostrarUsuariosAsociados(' + directory_url +', ' + rowId + ')" ><img title="Modificar Etiqueta" alt="Modificar etiqueta" src="' + directory_url + 'img/modificar.gif" /></a>';

	cells[cells.length - 1].innerHTML = botones;
}

function mostrarUsuariosAsociados(directory_url, etiquetaId) {

	url = directory_url + "etiquetas/mostrarUsuariosJuiciosAsociados/" + etiquetaId;
	jQuery('#asocUsuarios').load(url,function(transport, json) {
		edit(directory_url, etiquetaId);
	});							
}

function asociarUsuarioToEtiqueta(directory_url, usuarioId, etiquetaId, checked ) {

	var url = directory_url + "etiquetas/modificarRelacionEtiquetaUsuario/" + etiquetaId + "/" + usuarioId + "/" + checked;
	jQuery.ajax({
		type: "post",
		url : url,
		error: function (jqXHR, textStatus, errorThrown){
			alert("Hubo algun error");
		}
	});
	
}

function ocultarAsociacionUsuarios() {
	document.getElementById('asocUsuarios').style.display = "none";
}

function agregarNewRow() {
	document.getElementById("abm-new").style.display = "block";
}

function sacarNewRow() {
	document.getElementById("abm-new").style.display = "none";
}

function getRowById(rowId) {
	table = document.getElementById('abmList');
	rowCount = table.rows.length;

	rows = table.rows;
	var output = null;
	for (i = 0; i < rowCount; i++) {
		if (rows[i].cells[0].innerHTML == rowId) {
			output = rows[i];
			break;
		}
	}

	return output;
}

function  getRowId(row) {
	return row.cells[0].innerHTML;
}

function getSelectedRowId() {
	return document.getElementById("selected").cells[0].innerHTML;
}

function getSelectedRow() {
	return document.getElementById("selected");
}
